package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name string `json:"name"`
	// 首字母大小是public，可以被外部包访问
	Age int `json:"age"`
	// 首字母小写是private，只能在本包内访问
}

func main() {
	person := Person {"毕安卡", 21}
	fmt.Println(person)

	//转化为json格式
	result, err := json.Marshal(person)
	if err!= nil {
			fmt.Println(err)
	}
	fmt.Println(string(result))

// 	if result,err:=json.Marshal(&person);err==nil{  //json.Marshal 将对象转换为json字符串
// 　　fmt.Println(string(result))
// 　　}

// JSON字符串转化为对象
  var str = `{"Name":"毕安卡","Age":21}` //这里的每个字段的名称都得是公共的，否则无法转化为对象
	var person2 Person
	err1 := json.Unmarshal([]byte(str), &person2)
	if err1!= nil {
		fmt.Println(err1)
	}
	// fmt.Println(person2)
	fmt.Printf("%#v\n", person2)
}